Conventional programming environments do not fully support multi-computer processing unit (CPU) and cross-network execution, or flexible sharing of data between large numbers of computing processes. These existing mechanisms all suffer from shortcomings that make it difficult to build multi-process and multi-machine applications, and that force users working in more than one programming language to jump through frustrating hoops. For example, conventional event frameworks are strongly typed, which makes them inflexible, privileges the assumptions of the systems vendor over the application programmer, and forms a mismatch with the facilities of increasingly popular dynamic languages. The conventional frameworks are also configured only to support point-to-point data transfers, and this makes coordinating the activity of more than a few distinct processes difficult or impossible. The conventional frameworks are also strongly dependent on particular local, in-memory data structures, which renders them unsuited for on-disk storage or transmission across a network.